Distributed systems can involve networks having hundreds, thousands, or even millions or more nodes. Because building such large systems for experimental purposes is cost prohibitive, simulation is important to understanding and efficiently designing and implementing distributed systems. Simulation can play a sizable role at different stages of the development process and for different aspects of the distributed system being created. For example, both the distributed protocol and the system architecture may be simulated after conception and during iterative testing and any redesigning.
Simulations can test small-scale and large-scale architecture decisions. Simulations can also test different communication approaches and protocols. Generally, the manner in which time is simulated is also addressed so as to attempt to emulate real-world effects resulting from unexpected processing and communication delays. Many simulation parameters may be tuned to produce a simulator that simulates a targeted distributed system to a desired level of accuracy.